package modelo.tablero;

/**
 * Una coordenada esta compuesta por una fila y una columna sin ningún tipo de restricción.
 * 
 * @author Victor Del Rio
 */
public class Coordenada {
	
	private Integer fila;
	private Integer columna;
	
	
	/*------------------------------------ Constructors ------------------------------------*/

	public Coordenada(Integer fila, Integer columna) {
		this.fila = fila;
		this.columna = columna;
	}

	/*--------------------------------------------------------------------------------------*/
	/*------------------------------------ Public methods ----------------------------------*/

	public Coordenada sumarCon(Coordenada coordenada) {
		return new Coordenada(this.getFila() + coordenada.getFila(), this.getColumna() + coordenada.getColumna());
	}

	/*--------------------------------------------------------------------------------------*/
	/*---------------------------------- Geters and seters ---------------------------------*/

	public Integer getFila() {
		return fila;
	}
	
	public void setFila(Integer fila) {
		this.fila = fila;
	}
	
	public Integer getColumna() {
		return columna;
	}
	
	public void setColumna(Integer columna) {
		this.columna = columna;
	}

	/*--------------------------------------------------------------------------------------*/
	/*-------------------------------- Hash code and equals --------------------------------*/

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((columna == null) ? 0 : columna.hashCode());
		result = prime * result + ((fila == null) ? 0 : fila.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Coordenada other = (Coordenada) obj;
		if (columna == null) {
			if (other.columna != null)
				return false;
		} else if (!columna.equals(other.columna))
			return false;
		if (fila == null) {
			if (other.fila != null)
				return false;
		} else if (!fila.equals(other.fila))
			return false;
		return true;
	}

	/*--------------------------------------------------------------------------------------*/
	
}
